## Strukturen
- Mit Golang-Strukturen können wir Daten gruppieren.
- Sie ähneln Strukturen in anderen Programmiersprachen.
- Strukturen sind benutzerdefinierte Datentypen und ermöglichen Ihnen die Erstellung eigener benutzerdefinierter Typen.
- Strukturen können jede Art von Daten enthalten, auch andere Strukturen.
Strukturdefinition:
„Geh
Typ Strukturname struct {
Mitgliedsname Typ1
Mitgliedsname Typ2
...
Mitgliedsname TypN
}
„
– Dies definiert eine Struktur namens „structure_name“ mit den Mitgliedern „member_name“. Jedes Mitglied hat einen Typ, der jeder gültige Go-Typ sein kann.
Strukturen schaffen:
„Geh
var Strukturname =Strukturtyp {
Mitgliedsname1:Wert1,
Mitgliedsname2:Wert2,
...
MitgliedsnameN:WertN
}
„
– Dadurch wird eine Variable vom Typ „Strukturname“ erstellt und ihre Mitglieder mit den angegebenen Werten initialisiert.
Auf Mitglieder zugreifen:
- Um auf ein Strukturmitglied zuzugreifen, verwenden Sie den Punktoperator:„Strukturname.Mitgliedsname“.
Beispiel:
„Geh
// Definiere eine Struktur mit dem Namen „Person“ mit Namen und Altersmitgliedern.
Typ Personenstruktur {
Namenszeichenfolge
Alter int
}
func main() {
// Erstelle eine Person namens „John Doe“.
person1 :=person{"John Doe", 30}
// Johns Namen und Alter drucken.
fmt.Println("Name:", person1.Name)
fmt.Println("Alter:", person1.Age)
}
„
Benannte Strukturen:
- Wenn eine Struktur Felder grundlegender Datentypen enthält, kann sie ohne das Schlüsselwort struct deklariert werden.
„Geh
Typ MyStruct struct {
ein int
b float32
c-Zeichenfolge
}
Geben Sie Ihre Struktur ein {
f int 'json:"first"'
l string 'json:"last"'
}
„
– Sowohl für „MyStruct“ als auch für „your struct“ oben ist das Schlüsselwort struct optional
Anonyme Strukturen
- Anonyme Strukturen können verwendet werden, um Ad-hoc-Datentypen zu erstellen, ohne explizit einen Strukturtyp zu definieren.
- Wenn eine anonyme Struktur als Feld einer anderen Struktur oder als Element eines Slice/einer Karte verwendet wird, ist der Typ des Feldes die anonyme Struktur und das Tag des Feldes der Typname.
„Geh
Typ Personenstruktur {
Namenszeichenfolge
Alter int
}
„
- Alternativ können anonyme Strukturen verwendet werden, um eine Struktur zu instanziieren, ohne einen Strukturtyp zu definieren.
„Geh
var person =struct {
Namenszeichenfolge
Alter int
}{Name:„Bob“, Alter:20}
„
- In diesem Fall ist die Variable person vom Typ `struct{ name string; age int }` wird erstellt und initialisiert.
Strukturen einbetten
- Das Einbetten einer Struktur in eine andere Struktur ermöglicht eine Form der Vererbung in Go.
„Geh
Typ Personenstruktur {
Namenszeichenfolge
Alter int
}
Typ Mitarbeiterstruktur {
Gehalt int
Person
}
„
- Hier bettet „Employee“ „Person“ ein, sodass eine „Employee“-Variable die Felder von „Person“ (Name und Alter) sowie ihre eigenen Felder enthält.
„Geh
emp :=Mitarbeiter{Gehalt:100000, Person:Person{Name:„John“, Alter:30}}
fmt.Println(emp.salary) // 100000
fmt.Println(emp.name) // John
„
– Die Felder der eingebetteten Struktur werden in die äußere (enthaltende) Struktur hochgestuft, als wären sie in der enthaltenden Struktur deklariert worden. Hier kann nun auf die Felder „Name“ und „Alter“ von „Person“ über die Variable „Mitarbeiter“ („emp“) zugegriffen werden.
Tags in Strukturen
- Tags können an Strukturfelder angehängt werden, um zusätzliche Informationen bereitzustellen. Diese Tags werden von Reflektion und Encodern/Decodern verwendet.
„Geh
Typ Personenstruktur {
Namenszeichenfolge `json:"name"` // JSON-Tag
age int `xml:"age"` // XML-Tag
}
„
- Die Tags werden in Backticks („`“) eingeschlossen, wenn sie Leerzeichen oder andere Sonderzeichen enthalten.
Schlussfolgerung
- Strukturen bieten eine Möglichkeit, zusammengehörige Daten zu gruppieren und Ihre benutzerdefinierten Datentypen in Go zu erstellen.
- Je nach Situation können benannte und anonyme Strukturen verwendet werden, und die Einbettung ermöglicht eine Form der Vererbung.
- Für zusätzliche Metadaten und Kompatibilität mit Standardbibliotheken können Tags an Strukturfelder angehängt werden.